//package com.example.musicaiap.service
//
//import android.app.NotificationChannel
//import android.app.NotificationManager
//import android.app.PendingIntent
//import android.content.Context
//import android.content.Intent
//import android.os.Build
//import android.os.Bundle
//import android.widget.Toast
//import androidx.core.app.NotificationCompat
//import androidx.media3.common.Player
//import androidx.media3.common.util.UnstableApi
//import androidx.media3.session.MediaSession
//import androidx.media3.session.MediaSessionService
//import androidx.media3.session.SessionCommand
//import androidx.media3.ui.PlayerNotificationManager
//import com.example.musicaiap.R
//import com.example.musicaiap.service.MusicService
//
///**
// * 媒体通知管理器，负责创建和管理媒体播放通知
// */
//@UnstableApi
//class MediaNotificationManager(
//    private val context: Context,
//    private val player: Player,
//    private val mediaSession: MediaSession,
//    private val serviceClass: Class<out MediaSessionService>
//) {
//    companion object {
//        private const val NOTIFICATION_ID = 12345
//        private const val CHANNEL_ID = "com.example.musicaiap.media_playback"
//        private const val CHANNEL_NAME = "媒体播放"
//    }
//
//    private val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
//    private lateinit var playerNotificationManager: PlayerNotificationManager
//
//    init {
//        createNotificationChannel()
//        setupNotification()
//    }
//
//    /**
//     * 创建通知渠道（Android 8.0及以上需要）
//     */
//    private fun createNotificationChannel() {
//        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
//            val channel = NotificationChannel(
//                CHANNEL_ID,
//                CHANNEL_NAME,
//                NotificationManager.IMPORTANCE_LOW
//            ).apply {
//                description = "用于媒体播放控制的通知"
//                setShowBadge(false)
//                lockscreenVisibility = NotificationCompat.VISIBILITY_PUBLIC
//            }
//            notificationManager.createNotificationChannel(channel)
//        }
//    }
//
//    /**
//     * 设置媒体播放通知
//     * 按照UI需求，通知栏按钮排列顺序为：收藏、上一首、播放/暂停、下一首、歌词
//     */
//    private fun setupNotification() {
//        // 构建通知管理器
//        playerNotificationManager = PlayerNotificationManager.Builder(context, NOTIFICATION_ID, CHANNEL_ID)
//            .setMediaDescriptionAdapter(DescriptionAdapter(mediaSession))
//            .setNotificationListener(notificationListener)
//            .setChannelNameResourceId(R.string.notification_channel_name)
//            .setChannelDescriptionResourceId(R.string.notification_channel_description)
//            .setCustomActionReceiver(CustomActionReceiver())  // 设置自定义按钮接收器
//            .build()
//        
//        // 设置播放器
//        playerNotificationManager.setPlayer(player)
//        
//        // 设置通知图标
//        playerNotificationManager.setSmallIcon(R.drawable.ic_notification_music)
//        
//        // 设置通知中的按钮显示
//        playerNotificationManager.setUseNextActionInCompactView(true)
//        playerNotificationManager.setUsePreviousActionInCompactView(true)
//        playerNotificationManager.setUsePlayPauseActions(true)
//        playerNotificationManager.setUseStopAction(false)
//    }
//
//    /**
//     * 自定义按钮接收器，用于处理自定义按钮逻辑
//     */
//    private inner class CustomActionReceiver : PlayerNotificationManager.CustomActionReceiver {
//        override fun createCustomActions(context: Context, instanceId: Int): Map<String, NotificationCompat.Action> {
//            val actions = mutableMapOf<String, NotificationCompat.Action>()
//            
//            // 创建PendingIntent用于处理收藏按钮点击
//            val flags = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
//                PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
//            } else {
//                PendingIntent.FLAG_UPDATE_CURRENT
//            }
//            
//            // 收藏按钮的PendingIntent
//            val favoriteIntent = Intent(MusicService.COMMAND_TOGGLE_FAVORITE).apply {
//                setPackage(context.packageName)
//            }
//            val favoritePendingIntent = PendingIntent.getBroadcast(
//                context,
//                0,
//                favoriteIntent,
//                flags
//            )
//            
//            // 歌词按钮的PendingIntent
//            val lyricsIntent = Intent(MusicService.COMMAND_SHOW_LYRICS).apply {
//                setPackage(context.packageName)
//            }
//            val lyricsPendingIntent = PendingIntent.getBroadcast(
//                context,
//                1,
//                lyricsIntent,
//                flags
//            )
//            
//            // 添加收藏按钮
//            actions[MusicService.COMMAND_TOGGLE_FAVORITE] = NotificationCompat.Action(
//                R.drawable.ic_favorite,
//                context.getString(R.string.favorite),
//                favoritePendingIntent
//            )
//            
//            // 添加歌词按钮
//            actions[MusicService.COMMAND_SHOW_LYRICS] = NotificationCompat.Action(
//                R.drawable.ic_lyrics,
//                context.getString(R.string.lyrics),
//                lyricsPendingIntent
//            )
//            
//            return actions
//        }
//        
//        override fun getCustomActions(player: Player): List<String> {
//            // 返回自定义按钮的action ID列表，顺序决定了按钮显示顺序
//            // 收藏按钮放在最前面，歌词按钮放在最后面
//            return listOf(
//                MusicService.COMMAND_TOGGLE_FAVORITE,
//                MusicService.COMMAND_SHOW_LYRICS
//            )
//        }
//        
//        override fun onCustomAction(player: Player, action: String, intent: Intent) {
//            // 处理自定义按钮点击事件
//            when (action) {
//                MusicService.COMMAND_TOGGLE_FAVORITE -> {
//                    // 处理收藏按钮点击
//                    Toast.makeText(context, "收藏功能开发中", Toast.LENGTH_SHORT).show()
//                    
//                    // 不直接发送自定义命令给MediaSession，而是通过Intent启动服务
//                    val serviceIntent = Intent(context, MusicService::class.java).apply {
//                        setAction(MusicService.COMMAND_TOGGLE_FAVORITE)
//                    }
//                    context.startService(serviceIntent)
//                }
//                MusicService.COMMAND_SHOW_LYRICS -> {
//                    // 处理歌词按钮点击
//                    Toast.makeText(context, "歌词功能开发中", Toast.LENGTH_SHORT).show()
//                    
//                    // 不直接发送自定义命令给MediaSession，而是通过Intent启动服务
//                    val serviceIntent = Intent(context, MusicService::class.java).apply {
//                        setAction(MusicService.COMMAND_SHOW_LYRICS)
//                    }
//                    context.startService(serviceIntent)
//                }
//            }
//        }
//    }
//
//    /**
//     * 通知监听器
//     */
//    private val notificationListener = object : PlayerNotificationManager.NotificationListener {
//        override fun onNotificationCancelled(notificationId: Int, dismissedByUser: Boolean) {
//            // 用户移除通知时停止服务
//            (context as? MediaSessionService)?.stopSelf()
//        }
//
//        override fun onNotificationPosted(notificationId: Int, notification: android.app.Notification, ongoing: Boolean) {
//            // 通知发布时，如果正在播放，则启动前台服务
//            (context as? MediaSessionService)?.apply {
//                if (ongoing) {
//                    startForegroundService(context, serviceClass)
//                    startForeground(notificationId, notification)
//                } else {
//                    stopForeground(false)
//                }
//            }
//        }
//    }
//
//    /**
//     * 媒体描述适配器，用于设置通知上显示的信息
//     */
//    private inner class DescriptionAdapter(
//        private val mediaSession: MediaSession
//    ) : PlayerNotificationManager.MediaDescriptionAdapter {
//        override fun getCurrentContentTitle(player: Player): CharSequence {
//            return player.currentMediaItem?.mediaMetadata?.title ?: "未知歌曲"
//        }
//
//        override fun createCurrentContentIntent(player: Player) = null
//        
//        override fun getCurrentContentText(player: Player): CharSequence? {
//            return player.currentMediaItem?.mediaMetadata?.artist ?: "未知艺术家"
//        }
//
//        override fun getCurrentLargeIcon(player: Player, callback: PlayerNotificationManager.BitmapCallback) = null
//    }
//
//    /**
//     * 启动前台服务
//     */
//    private fun startForegroundService(context: Context, serviceClass: Class<out MediaSessionService>) {
//        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
//            context.startForegroundService(
//                Intent(context, serviceClass)
//            )
//        } else {
//            context.startService(
//                Intent(context, serviceClass)
//            )
//        }
//    }
//
//    /**
//     * 获取通知ID
//     */
//    fun getNotificationId(): Int = NOTIFICATION_ID
//}
//
//
